{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[NbConvertApp] Converting notebook seqInit.ipynb to python\n",
      "[NbConvertApp] Writing 1367 bytes to seqInit.py\n"
     ]
    }
   ],
   "source": [
    "!jupyter nbconvert --to python seqInit.ipynb"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "### 标准RNN模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f49681b90b8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "dataSet shape :\t (144, 1)\n",
      "train data shape : (120, 1)\n",
      "real data shape : (144, 1)\n"
     ]
    }
   ],
   "source": [
    "# 引入torch相关模块\n",
    "import torch\n",
    "from torch import nn, optim\n",
    "from torch.autograd import Variable\n",
    "from torch.nn import init\n",
    "\n",
    "# 引入初始化文件中的相关内容\n",
    "from seqInit import toTs, cudAvl\n",
    "from seqInit import input_size\n",
    "from seqInit import train, real\n",
    "\n",
    "# 引入画图工具\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 定义RNN模型\n",
    "\n",
    "class rnnModel(nn.Module) :\n",
    "    def __init__(self, in_dim, hidden_dim, out_dim, layer_num) :\n",
    "        super().__init__()\n",
    "        self.rnnLayer = nn.RNN(in_dim, hidden_dim, layer_num)\n",
    "        self.fcLayer = nn.Linear(hidden_dim, out_dim)\n",
    "        optim_range = np.sqrt(1.0 / hidden_dim)\n",
    "        self.weightInit(optim_range)\n",
    "        \n",
    "    def forward(self, x) :\n",
    "        out, _ = self.rnnLayer(x)\n",
    "        out = out[12:]\n",
    "        out = self.fcLayer(out)\n",
    "        return out\n",
    "\n",
    "    def weightInit(self, gain=1):\n",
    "        # 使用初始化模型参数\n",
    "        for name, param in self.named_parameters() :\n",
    "            if 'rnnLayer.weight' in name :\n",
    "                init.orthogonal(param, gain)\n",
    "    \n",
    "# 输入维度为1，输出维度为1，隐藏层维数为10, 定义rnn层数为2\n",
    "rnn = cudAvl(rnnModel(1, 10, 1, 2))\n",
    "\n",
    "# 确定损失函数和优化函数\n",
    "criterion = nn.MSELoss()\n",
    "optimizer = optim.Adam(rnn.parameters(), lr = 1e-2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([119, 1, 1]) torch.Size([107, 1, 1])\n"
     ]
    }
   ],
   "source": [
    "# 处理输入\n",
    "\n",
    "def create_dataset(dataset) :\n",
    "    data = dataset.reshape(-1, 1, 1)\n",
    "    return torch.from_numpy(data)\n",
    "\n",
    "trainX = create_dataset(train[:-1])\n",
    "trainY = create_dataset(train[1:])[12:]\n",
    "print(trainX.shape, trainY.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch[200/2000], loss = 0.00214\n",
      "Epoch[400/2000], loss = 0.00219\n",
      "Epoch[600/2000], loss = 0.00173\n",
      "Epoch[800/2000], loss = 0.00077\n",
      "Epoch[1000/2000], loss = 0.00026\n",
      "Epoch[1200/2000], loss = 0.00033\n",
      "Epoch[1400/2000], loss = 0.00013\n",
      "Epoch[1600/2000], loss = 0.00012\n",
      "Epoch[1800/2000], loss = 0.00013\n",
      "Epoch[2000/2000], loss = 0.00011\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f4967e427f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 1min 29s, sys: 20 s, total: 1min 49s\n",
      "Wall time: 1min 53s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "\n",
    "# 训练RNN模型\n",
    "frq, sec = 2000, 200\n",
    "loss_set = []\n",
    "for e in range(1, frq + 1) :\n",
    "    inputs = cudAvl(Variable(trainX))\n",
    "    target = cudAvl(Variable(trainY))\n",
    "    # forward\n",
    "    output = rnn(inputs)\n",
    "    loss = criterion(output, target)\n",
    "    # update gradients\n",
    "    optimizer.zero_grad()\n",
    "    loss.backward()\n",
    "    optimizer.step()\n",
    "    # print training information\n",
    "    print_loss = loss.data[0]\n",
    "    loss_set.append((e, print_loss))\n",
    "    if e % sec == 0 :\n",
    "        print('Epoch[{}/{}], loss = {:.5f}'.format(e, frq, print_loss))\n",
    "\n",
    "# 作损失函数图像\n",
    "pltX = np.array([loss[0] for loss in loss_set])\n",
    "pltY = np.array([loss[1] for loss in loss_set])\n",
    "plt.title('loss function output curve')\n",
    "plt.plot(pltX, pltY)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([143, 1, 1]) (131,) (143,)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7f495c067eb8>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f4967e612b0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 测试\n",
    "\n",
    "rnn = rnn.eval()\n",
    "px = real[:-1].reshape(-1, 1, 1)\n",
    "px = torch.from_numpy(px)\n",
    "ry = real[1:].reshape(-1)\n",
    "varX = cudAvl(Variable(px, volatile=True))\n",
    "py = rnn(varX).data\n",
    "py = np.array(py).reshape(-1)\n",
    "print(px.shape, py.shape, ry.shape)\n",
    "\n",
    "# 画出实际结果和预测的结果\n",
    "plt.plot(py[-24:], 'r', label='prediction')\n",
    "plt.plot(ry[-24:], 'b', label='real')\n",
    "plt.legend(loc='best')"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
